package com.dyrj.ysk.util;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 用于生成临时参数
 * @author 吴侠志  2019/11/6
 * @version 1.0
 */
public class FakeDataUtil {
    /**
     * 系统流水号（CnsmrSeqNo）规范：6位uid(文件传输用户短号)+6位系统日期(YYMMDD)+10位随机数
     * @param uid 文件传输平台分配的用户名(用户短号)
     * @return
     */
    public static String randomCnsmrSeqNo(String uid){
        return uid+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMdd"))+RandomUtil.randomString(10);
    }

    /**
     * 对账日期 取昨天
     * @return
     */
    public static String reconcileDateYestoday(){
        return reconcileDate(-1);
    }

    public static String reconcileDate(int plusDay){
        return LocalDate.now().plusDays(plusDay).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
    }

    /**
     * 签约编号
     * @return
     */
    public static String randomSignNo(){
        return "123456789123456";
    }
    /**
     * 随机商户订单号
     * @return
     */
    public static String randomTraderOrderNo(){
        return System.currentTimeMillis()+RandomUtil.randomString(15);
    }

    /**
     * 协议流水号 yyyyMMddHHmmss + 随机数
     * @return
     */
    public static String randomAgreeSeqNo(){
        return orderSendTimeNow()+RandomUtil.randomNumbers(4);
    }

    /**
     * 绑卡流水号
     * @return
     */
    public static String randomBindCardSeqNo(){
        return System.currentTimeMillis()+RandomUtil.randomString(15);
    }
    /**
     * 订单发送时间
     * @return
     */
    public static String orderSendTimeNow(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
    }

    /**
     * 后台回调url
     * @return
     */
    public static String callBackNoticeUrl(){
        return "https://cloudpayweb-fat2.orangebank.com.cn/test/notifyUrl";
    }

    /**
     * 前台通知url
     * @return
     */
    public static String frontSkipUrl(){
        return "https://cloudpayweb-fat2.orangebank.com.cn/test/jumpUrl";
    }

    /**
     * 订单备注
     * @return
     */
    public static String orderRemark(){
        return "[{'oderlist': [{'PayModel': '1', 'SubAccNo': '5031000000001029', 'TranFee': '0.01'}], 'SFJOrdertype': '0', 'plantCode': '5031', 'remarktype': 'SDS0100000'}]";
    }

    /**
     * 退款备注
     * @return
     */
    public static String refundRemark(){
        return "[{'oderlist': [{'refundModel': '1', 'SubAccNo': '5031000000001029', 'RefundTranFee': '0.01'}], 'SFJOrdertype': '0', 'plantCode': '5031', 'remarktype': 'SDT0100000'}]";
    }
    /**
     * 原交易商户订单号 用于查询单笔订单、撤销订单、申请退款
     * @return
     */
    public static String oldOrderNo(){
        return "1573181352738RJiLPCSiEyNdbSg";
    }

    /**
     * 原交易订单发送时间 用于查询单笔订单、撤销订单、申请退款
     * @return
     */
    public static String oldOrderSendTime(){
        return "20191108104912";
    }

    /**
     * 原交易退款订单号 用于查询单笔退款
     * @return
     */
    public static String returnOrderNo(){
        return "1573184259693coJsCYEcJiPNTPm";
    }

    /**
     * 原交易退款订单发送时间 用于查询单笔退款
     * @return
     */
    public static String returnOrderSendTime(){
        return "20191108113739";
    }

    /**
     *客户号
     * @return
     */
    public static String clientNo(){
        return "10002";
    }

    /**
     * 绑卡编号
     * @return
     */
    public static String bindCardNo(){
        return "372340245982291900";
//        return "6216261000000000018";
    }

    /**
     * 商户公众号/小程序appid
     * @return
     */
    public static String traderPublicNo(){
        return "wx2421b1c4370ec43b";
    }

    /**
     * 支付授权目录 银行特约商户公众账号JS API支付授权目录
     * @return
     */
    public static String payAuthCatalog(){
        return "http://www.qq.com/abcd/";
    }

    /**
     * 配置推荐关注公众号appid
     * @return
     */
    public static String attentionPublicNoAppId(){
        return "wx2421b1c4370ec43b";
    }

    /**
     * 支付凭证推荐小程序appid
     * @return
     */
    public static String payMiniProgramAppId(){
        return "wx2421b1c4370ec43b";
    }

    /**
     * 随机签约流水号
     * @return
     */
    public static String randomSignSeqNo(){
        return System.currentTimeMillis()+RandomUtil.randomString(15);
    }

    /**
     * 付款人账号
     * @return
     */
    public static String payerAcctNo(){
        return "9454534400000000000";
    }

    /**
     * 付款人户名
     * @return
     */
    public static String payerAcctName(){
        return "王小明";
    }

    /**
     * 付款人证件号码
     * @return
     */
    public static String payerGlobalId(){
        return "3645400015454560000";
    }

    /**
     * 付款人预留手机号码
     * @return
     */
    public static String payerReserverMobile(){
        return "13800138000";
    }

    /**
     * 子订单号（suborderId）规范：6位uid(文件传输用户短号)+6位系统日期(YYMMDD)+10位随机数
     * 子订单号	String(22)	不可超过22位，且全局唯一，不可跟本订单或其他订单明细重复。
     * @return
     */
    public static String randomSuborderId(String uid){
        return uid+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMdd"))+RandomUtil.randomString(10);
    }


    /**
     * 签约编号
     * @return
     */
    public static String signNo(){
        return "12346588";
    }
    public static void main(String[] args){
//        System.out.println(randomTraderOrderNo());
//        System.out.println(randomBindCardSeqNo());
        String uid="O10556";
        System.out.println(randomSuborderId(uid));
    }

}
